<!DOCTYPE html>
<html>
    <head>
        <title>Index of</title>
        <style>
            h1 {
                border-bottom: 1px solid black;
            }

            .listing {
                margin: 0.5em;
                display: table;
            }

            .listing .header,
            .listing .entry {
                display: table-row;
            }

            .listing .header {
                font-weight: bold;
            }

            .listing .header span,
            .listing .entry span {
                display: table-cell;
                padding-right: 1em;
            }

            .entry span:nth-child(1) {
                min-width: 20em;
            }

            .entry span.size,
            .entry span.last-modified {
                white-space: nowrap;
            }

            .parent_link > a:before {
                content: "📁 ";
            }

            .parent_link {
                display: none;
            }

            .entry.directory > .name:before {
                content: "📁 ";
            }

            .entry.file > .name:before {
                content: "📄 ";
            }

            .entry.symlink > .name:before {
                content: "🔗 ";
            }
        </style>
        <script>
            function setData(directoryName, parentLink, rows) {
                document.title += directoryName;
                document.querySelector("h1").innerHTML += " " + directoryName;

                if (parentLink != "") {
                    document.querySelector(".parent_link > a").href = parentLink;
                    document.querySelector(".parent_link").style.display = "initial";
                }

                rows.sort((rowA, rowB) => rowA[1].localeCompare(rowB[1]));

                let listing = document.querySelector(".listing");
                let rowTemplate = document.getElementById("rowTemplate");
                for (row of rows) {
                    let rowElement = rowTemplate.content.cloneNode(true);
                    rowElement.querySelector(".entry").classList.add(row[0]);
                    rowElement.querySelector(".name > .link").innerText = row[1];
                    rowElement.querySelector(".name > .link").href = row[2];
                    rowElement.querySelector(".size").innerText = row[3];
                    rowElement.querySelector(".last-modified").innerText = row[4];
                    listing.appendChild(rowElement);
                }
            }
        </script>
    </head>
    <body>
        <h1>Index of</h1>
        <div class="parent_link"><a href="">Up to parent directory</a></div>
        <div class="listing">
            <div class="header">
                <span class="name">Name</span>
                <span class="size">Size</span>
                <span class="last-modified">Last Modified</span>
            </div>
        </div>
        <template id="rowTemplate">
            <div class="entry">
                <span class="name"><a class="link"></a></span>
                <span class="size"></span>
                <span class="last-modified"></span>
            </div>
        </template>
    </body>
</html>
